ããã³ããšã³ãä»®æ³ããŒããŒãAPIã®æ©èœãå©ç¹ãå®è£ ã詳述ããäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠã¢ã¯ã»ã·ãã«ã§äœ¿ãããããªã³ã¹ã¯ãªãŒã³ããŒããŒãäœéšãåµåºããããã®å æ¬çãªè§£èª¬ã
ããã³ããšã³ãä»®æ³ããŒããŒãAPIïŒã°ããŒãã«ãªå©çšè ã®ããã®ãªã³ã¹ã¯ãªãŒã³ããŒããŒãå¶åŸ¡ã®åŒ·å
仿¥ã®ãŸããŸãã¿ããäžå¿ã®ããžã¿ã«ç°å¢ã«ãããŠãWebã¢ããªã±ãŒã·ã§ã³ãšã®ã·ãŒã ã¬ã¹ãªå¯Ÿè©±èœåã¯éåžžã«éèŠã§ããã°ããŒãã«ãªå©çšè ã«ãšã£ãŠãããã¯å€æ§ãªå ¥åæ¹æ³ãšã¢ã¯ã»ã·ããªãã£ã®ããŒãºã«å¿ããããšãæå³ããŸããããã³ããšã³ãä»®æ³ããŒããŒãAPIã¯ãéçºè ã«ãšã£ãŠåŒ·åãªããŒã«ãšããŠç»å Žãããªã³ã¹ã¯ãªãŒã³ããŒããŒãã®å¶åŸ¡ã匷åããããçŽæçã§ã¢ã¯ã»ã·ãã«ãªWebäœéšãžã®éãéããŸãã
ãªã³ã¹ã¯ãªãŒã³ããŒããŒãå¶åŸ¡ã®å¿ èŠæ§ãçè§£ãã
åŸæ¥ã®ç©çããŒããŒããããã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠåžžã«å©çšå¯èœãŸãã¯é©åã§ãããšã¯éããŸãããã¿ãã¬ãããã¹ããŒããã©ã³ãããã«ã¯äžéšã®ãã¹ã¯ãããèšå®ã®ãããªããã€ã¹ã¯ãç»é¢ã«è¡šç€ºãããä»®æ³ããŒããŒãã«å€§ããäŸåããŠããŸããããã«ã身äœçãªé害ãæã€ãŠãŒã¶ãŒã¯ç©çããŒããŒãã®æäœãå°é£ãªå Žåãããããªã³ã¹ã¯ãªãŒã³ããŒããŒãã¯äžå¯æ¬ ãªã¢ã¯ã»ã·ããªãã£æ©èœãšãªããŸãã
æµ·å€ã®ãŠãŒã¶ãŒã«ãšã£ãŠãèšèªãæåã»ãããå ¥åæ¹æ³ã®å€æ§æ§ã¯ç¹æã®èª²é¡ãæç€ºããŸããå ç¢ãªä»®æ³ããŒããŒããœãªã¥ãŒã·ã§ã³ã¯ããããã®ããªãšãŒã·ã§ã³ã«å¯Ÿå¿ããã¬ã€ã¢ãŠãã®ç°¡åãªåãæ¿ãããã©ãã³æåããŒã¹ã®ã¹ã¯ãªãããã衚ææåã·ã¹ãã ãŸã§ã倿°ã®èšèªã«å¯Ÿããå¹ççãªå ¥åãæäŸããå¿ èŠããããŸãã
ããã³ããšã³ãä»®æ³ããŒããŒãAPIã¯ãéçºè ã«ä»¥äžãããã°ã©ã çã«è¡ãææ®µãæäŸããŸãïŒ
- ä»®æ³ããŒããŒãã®ååšãšãã®ç¶æ ïŒäŸïŒè¡šç€ºãé衚瀺ïŒãæ€åºããã
- ãªã³ã¹ã¯ãªãŒã³ããŒããŒãã®åäœãå€èгã«åœ±é¿ãäžããã
- ç¹å®ã®ããŒããŒãã¢ã¯ã·ã§ã³ãããã°ã©ã çã«ããªã¬ãŒããã
- ä»®æ³ããŒããŒãã®ååšã«é©å¿ãããããçµ±åçã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããã
ä»®æ³ããŒããŒãAPIã®äž»ãªç¹åŸŽãšæ©èœ
å ·äœçãªå®è£ ããµããŒããããæ©èœã¯ãã©ãŠã¶ããã©ãããã©ãŒã ã«ãã£ãŠç°ãªãå ŽåããããŸãããä»®æ³ããŒããŒãAPIã®æ žãšãªãæ©èœã¯ãéåžžãå ¥åãã©ãŒã«ã¹ãšããŒããŒãã®å¯èŠæ§ã®ç®¡çãäžå¿ã«å±éãããŸãã
1. å ¥åãã©ãŒã«ã¹ç®¡ç
ä»®æ³ããŒããŒãã衚瀺ãããäž»ãªããªã¬ãŒã¯ãéåžžããŠãŒã¶ãŒãããã¹ããã£ãŒã«ããããã¹ããšãªã¢ãªã©ã®å ¥åèŠçŽ ã«ãã©ãŒã«ã¹ãããšãã§ããä»®æ³ããŒããŒãAPIã«ãããéçºè ã¯ä»¥äžã®ããšãå¯èœã«ãªããŸãïŒ
- å
¥åãã©ãŒã«ã¹ã®æ€åºïŒ å
¥åèŠçŽ ã®
focusãblurã®ãããªã€ãã³ãããªãã¹ã³ãããŠãŒã¶ãŒããã©ãŒã ãã£ãŒã«ããšå¯Ÿè©±ããããšããŠããã¿ã€ãã³ã°ãçè§£ããã - ããã°ã©ã ã«ãããã©ãŒã«ã¹ããªã¬ãŒïŒ JavaScriptã䜿çšããŠå ¥åèŠçŽ ã«ãã©ãŒã«ã¹ãèšå®ãããã®ããã«èšå®ãããŠããã°ããã°ã©ã çã«ä»®æ³ããŒããŒããåŒã³åºããããã¯ããŠãŒã¶ãŒããã©ãŒã ãç¹å®ã®å ¥åã·ããªãªãéããŠèªå°ããã®ã«åœ¹ç«ã¡ãŸãã
2. ããŒããŒãå¯èŠæ§å¶åŸ¡
å ¥åããã©ãŒã«ã¹ããããšãã«åã«è¡šç€ºãããã ãã§ãªããéçºè ã¯ä»®æ³ããŒããŒãã®å¯èŠæ§ã«å¯ŸããŠããæç€ºçãªå¶åŸ¡ãå¿ èŠãšããå ŽåããããŸããããã«ã¯ä»¥äžãå«ãŸããå¯èœæ§ããããŸãïŒ
- ããŒããŒãç¶æ ã®æ€åºïŒ äžéšã®APIã¯ãä»®æ³ããŒããŒããçŸåšè¡šç€ºãããŠãããã©ãããæ€åºããæ¹æ³ãæäŸããå ŽåããããŸããããã«ãããã³ã³ãã³ããé ãããã®ãé²ããªã©ãã¬ã¹ãã³ã·ããã¶ã€ã³ã®èª¿æŽãå¯èœã«ãªããŸãã
- ããŒããŒã衚瀺ã®èŠæ±ïŒ ç¹å®ã®ã³ã³ããã¹ãã§ã¯ãéçºè ã¯åŸæ¥ã®å ¥åèŠçŽ ã«çŽæ¥ãã©ãŒã«ã¹ãåœãã£ãŠããªããŠããä»®æ³ããŒããŒãã®è¡šç€ºãæç€ºçã«èŠæ±ãããå ŽåããããŸããããã¯ã«ã¹ã¿ã å ¥åã³ã³ããŒãã³ãã«ç¹ã«é¢é£ããŸãã
- ããŒããŒãã®éè¡šç€ºïŒ äžèŠã«ãªã£ããšãã«ããã°ã©ã çã«ä»®æ³ããŒããŒããé衚瀺ã«ããããã¯ãªãŒã³ãªãŠãŒã¶ãŒäœéšãæäŸããã
3. ã¬ã€ã¢ãŠããšèšèªãµããŒã
ã°ããŒãã«ãªå©çšè ã«ãšã£ãŠãè€æ°ã®ããŒããŒãã¬ã€ã¢ãŠããšèšèªããµããŒãããããšã¯éåžžã«éèŠã§ããä»®æ³ããŒããŒãAPIèªäœãçŽæ¥ã¬ã€ã¢ãŠããæ±ºå®ããããã§ã¯ãããŸããããå€ãã®å Žåããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã©ãŠã¶ã®å ¥åã¡ãœãããšãã£ã¿ïŒIMEïŒãšé£æºããŠæ©èœããŸãã
- IMEçµ±åïŒ APIã¯IMEãšã®å¯Ÿè©±ãä¿é²ãããŠãŒã¶ãŒãç°ãªãèšèªã®ããŒããŒãéãã·ãŒã ã¬ã¹ã«åãæ¿ããããšãå¯èœã«ããŸãã
- ã«ã¹ã¿ãã€ãºå¯èœãªããŒããŒãïŒ é«åºŠãªå®è£ ã§ã¯ãéçºè ãå®å šã«ã«ã¹ã¿ã ãªä»®æ³ããŒããŒãã³ã³ããŒãã³ããäœæã§ããç¹å®ã®èšèªããã¡ã€ã³ã®ã¬ã€ã¢ãŠããå€èгãããã«ã¯äºæž¬ããã¹ããŸã§å®å šã«å¶åŸ¡ã§ããŸãã
ä»®æ³ããŒããŒãå¶åŸ¡ãå®è£ ããã¡ãªãã
ããã³ããšã³ãä»®æ³ããŒããŒãAPIãæŽ»çšããããšã¯ã倿§ãªæµ·å€ãŠãŒã¶ãŒå±€ã察象ãšããWebã¢ããªã±ãŒã·ã§ã³ã«å€§ããªå©ç¹ããããããŸãïŒ
1. ã¢ã¯ã»ã·ããªãã£ã®åäž
ããã¯ééããªãæãéèŠãªå©ç¹ã§ããéåé害ãæã€åäººãæ¯æŽæè¡ã«é Œã人ã ã«ãšã£ãŠãããŸãçµ±åãããä»®æ³ããŒããŒãã¯äžå¯æ¬ ã§ãããªã³ã¹ã¯ãªãŒã³ããŒããŒãã®æç¢ºãªå¶åŸ¡ãæäŸããããšã§ãéçºè ã¯ä»¥äžãä¿èšŒã§ããŸãïŒ
- ãã¹ãŠã®äººã®ããã®ãŠãŒã¶ããªãã£ïŒ ç©çããŒããŒãã䜿çšã§ããªããŠãŒã¶ãŒããWebãã©ãŒã ãã¢ããªã±ãŒã·ã§ã³ã广çã«æäœã§ããŸãã
- ã¹ã¯ãªãŒã³ãªãŒããŒãšã®äºææ§åäžïŒ ä»®æ³ããŒããŒãã®æäœãã¹ã¯ãªãŒã³ãªãŒããŒã«ãã£ãŠæ£ããèªã¿äžããããããã«ããããšã¯ãèŠèŠé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠäžå¯æ¬ ã§ãã
- ç©çããŒããŒããžã®äŸåã®è»œæžïŒ ããã¯ç©çããŒããŒãããªãããŸãã¯äžäŸ¿ãªããã€ã¹äžã®ãŠãŒã¶ãŒã«å©çããããããŸãã
2. ã¿ããããã€ã¹ã§ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäž
ã¿ãã¬ãããã¹ããŒããã©ã³ã§ã¯ãä»®æ³ããŒããŒããããã¹ãå ¥åã®äž»èŠãªææ®µã§ããã¬ã¹ãã³ã·ãã§äºæž¬å¯èœãªä»®æ³ããŒããŒãäœéšã¯ã以äžã«ã€ãªãããŸãïŒ
- ããã¹ã ãŒãºãªãã©ãŒã éä¿¡ïŒ ãŠãŒã¶ãŒã¯ãã©ã¹ãã¬ãŒã·ã§ã³ãªããã©ãŒã ãããã²ãŒãããå ¥åã§ããŸãã
- äžè²«ããã€ã³ã¿ã©ã¯ã·ã§ã³ïŒ ããŒããŒããäºæž¬ã©ããã«åäœããæ··ä¹±ãæžãããŸãã
- é©å¿å¯èœãªã¬ã€ã¢ãŠãïŒ Webãµã€ãã¯ããŒããŒãã衚瀺ããããšãã«ã¬ã€ã¢ãŠããåçã«èª¿æŽããéèŠãªã³ã³ãã³ããé ããã®ãé²ããŸããäŸãã°ãæ¥æ¬ã®Eã³ããŒã¹ãµã€ãã®æ±ºæžããŒãžã§ã¯ãæ¥æ¬èªæåçšã®ä»®æ³ããŒããŒãã衚瀺ãããéã«å ¥åãã£ãŒã«ããåçã«äžã«ãããããšããããŸãã
3. åœéåãšããŒã«ãªãŒãŒã·ã§ã³
ã°ããŒãã«ãªã¢ããªã±ãŒã·ã§ã³ã¯ãå€çš®å€æ§ãªèšèªãšå ¥åæ¹æ³ã«å¯Ÿå¿ããå¿ èŠããããŸããä»®æ³ããŒããŒãAPIã¯ã以äžã®ç¹ã§åœ¹å²ãæãããŸãïŒ
- èšèªåãæ¿ãã®ä¿é²ïŒ å®éã®ããŒããŒãã¬ã€ã¢ãŠãã¯ãã©ãŠã¶/OSãåŠçããŸãããAPIã¯UIãéããŠãŠãŒã¶ãŒãããããåãæ¿ããèœåããµããŒãã§ããŸãã
- æåã»ãããžã®é©å¿ïŒ èšèªã«ãã£ãŠæåã»ãããå ¥åèŠåãç°ãªããŸããããŸãèšèšãããä»®æ³ããŒããŒãäœéšã¯ãããããé©åã«åŠçãããããšãä¿èšŒããŸããã€ã³ãã§äœ¿çšãããéè¡ã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŠãã ããããŠãŒã¶ãŒã¯ããŒãŽã¡ããŒã¬ãªãŒæ°åããŒãããã䜿çšããŠæ°å€ãå ¥åãããããããŸããããAPIã¯ãã®ãããªã·ããªãªã«å¯Ÿå¿ããã®ã«åœ¹ç«ã¡ãŸãã
- 倿§ãªå ¥åããŒãºã®ãµããŒãïŒ è€éãªCJKïŒäžåœèªãæ¥æ¬èªãéåœèªïŒå ¥åã¡ãœããããããšãŒãããèšèªã®ã¢ã¯ã»ã³ãèšå·ãçºé³åºå¥ç¬Šå·ãŸã§ãAPIã¯ããå æ¬çãªå ¥åäœéšã«è²¢ç®ããŸãã
4. ã«ã¹ã¿ã å ¥åã³ã³ããŒãã³ã
å°éçãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãéçºè ã¯æšæºçãªHTMLå ¥åãã£ãŒã«ãã«äŸåããªãã«ã¹ã¿ã å ¥åã³ã³ããŒãã³ããäœæããå¿ èŠããããããããŸãããä»®æ³ããŒããŒãAPIã¯ã以äžã«ãããŠåœ¹ç«ã¡ãŸãïŒ
- ã«ã¹ã¿ã ããŒã¿å ¥åïŒ äŸãã°ãç¹å®ã®ãã©ãŒãããèŠä»¶ãæã€PINãã¯ã¬ãžããã«ãŒãçªå·ãå ¥åããããã®ä»®æ³ããŒãããã
- ã²ãŒã ãã¯ãªãšã€ãã£ãã¢ããªã±ãŒã·ã§ã³ïŒ ç¹å®ã®ããŒãããã³ã°ãç¬èªã®å ¥åæ¹æ³ãå¿ èŠãªå Žåã
ããã³ããšã³ãä»®æ³ããŒããŒãAPIã®å®è£ ïŒå®è·µäŸ
ä»®æ³ããŒããŒãAPIã®è©³çްã¯ãããæœè±¡çãããããŸãããããã€ãã®å®è·µçãªã·ããªãªãšããããã«ã©ã®ããã«ã¢ãããŒãããããèŠãŠã¿ãŸãããã
äŸ1ïŒå ¥åãã£ãŒã«ãã衚瀺ããç¶ããããã«ãã
å°ããªç»é¢ã§ããããåé¡ã¯ãä»®æ³ããŒããŒããå ¥åãã£ãŒã«ããé ããŠããŸãããšã§ããç¹ã«ãããŒããŒãã倧ããå Žåããã©ãŒã ãããŒãžã®äžéšã«ããå Žåã«èµ·ãããŸãã
ã·ããªãªïŒ ãŠãŒã¶ãŒãã¢ãã€ã«ããã€ã¹ã§ç»é²ãã©ãŒã ãå ¥åããŠããŸããæåŸã®å ¥åãã£ãŒã«ãã§ãããã¹ã¯ãŒãç¢ºèªæ¬ããä»®æ³ããŒããŒãã«ãã£ãŠé ãããŠããŸããŸãã
解決çïŒ focusã€ãã³ãããªãã¹ã³ããããŒããŒãã®ååšãæ€åºããïŒãã ããçŽæ¥çãªæ€åºã¯ããªãããŒã§ãã©ãŠã¶ã«äŸåããããšããããŸãïŒããšã§ãã¹ã¯ããŒã«äœçœ®ããã©ãŒã ã®ã¬ã€ã¢ãŠããåçã«èª¿æŽã§ããŸãã
æŠå¿µã³ãŒãïŒèª¬æçšããã©ãŠã¶ã®ãµããŒãã¯ç°ãªããŸãïŒïŒ
// ããã¯æŠå¿µçãªäŸã§ãããç¹å®ã®ãã©ãŠã¶APIãããªãã£ã«ãå¿
èŠã«ãªãå ŽåããããŸãã
document.querySelectorAll('input, textarea').forEach(input => {
input.addEventListener('focus', () => {
// äžè¬çãªãã¿ãŒã³ã¯ã芪ã³ã³ãããã¹ã¯ããŒã«ããŠå
¥åãèŠããããã«ããããšã§ãã
// ããã«ã¯ãªãã»ãããèšç®ããscrollToã䜿çšããããšããããããŸãã
// ããŒããŒãã®æ£ç¢ºãªé«ããæ€åºããã®ã¯è€éã§ããã©ãããã©ãŒã ã«äŸåããŸãã
// iOSã®å Žåãç¹å®ã®éç¥ããã¥ãŒããŒãã®èª¿æŽããã°ãã°ãããŸãã
// Androidã®å ŽåããŠã£ã³ããŠã®ã€ã³ã»ãããã¯ãšãªããå¿
èŠããããããããŸããã
// ç°¡åãªã¢ãããŒãã¯ã芪èŠçŽ ãå
¥åã®äœçœ®ãŸã§ã¹ã¯ããŒã«ããããšã§ãïŒ
setTimeout(() => {
input.scrollIntoView({ behavior: 'smooth', block: 'center' });
}, 100); // ããŒããŒããã¬ã³ããªã³ã°ãããã®ãåŸ
ã€ããã®çãé
å»¶
});
});
ã°ããŒãã«ãªèæ ®äºé ïŒ ã¢ãã€ã«OSããã©ãŠã¶ã«ãã£ãŠãããŒããŒãã®å¯èŠæ§ããã¥ãŒããŒãã®èª¿æŽã管çããããã®åäœãAPIã¯ç°ãªããŸããããŸããŸãªããã€ã¹ããã©ãããã©ãŒã ïŒiOSãAndroidãChromeãSafariãFirefoxãªã©ã®ç°ãªããã©ãŠã¶ïŒã§ãã¹ãããããšãéåžžã«éèŠã§ãã
äŸ2ïŒã«ã¹ã¿ã å ¥åã³ã³ããŒãã³ããããªã¬ãŒãã
ã»ãã¥ãªãã£ã³ãŒããå ¥åããããã«å°éã®æ°åããŒããããå¿ èŠã§ããããã·ã¹ãã ã®ä»®æ³ããŒããŒãã®ããã«åäœããããã·ããªãªãæ³åããŠã¿ãŠãã ããã
ã·ããªãªïŒ ãªã³ã©ã€ã³ãã³ãã³ã°ã¢ããªã±ãŒã·ã§ã³ã§ããŠãŒã¶ãŒã6æ¡ã®ã»ãã¥ãªãã£ã³ãŒããå ¥åããå¿ èŠããããŸããæšæºã®ããã¹ãå ¥åã®ä»£ããã«ã6ã€ã®ãã¹ã¯ãããæ°åã®ã«ã¹ã¿ã ããžã¥ã¢ã«è¡šç€ºã衚瀺ãããã«ã¹ã¿ã ã®æ°åããŒããããã¯ãªãã¯ãããšæ°åãæ¿å ¥ãããŸãã
解決çïŒ ã«ã¹ã¿ã ä»®æ³ããŒããŒãã³ã³ããŒãã³ããäœæããŸãïŒäŸïŒHTMLãCSSãããã³ReactãVueãAngularãªã©ã®JavaScriptãã¬ãŒã ã¯ãŒã¯ã䜿çšïŒããŠãŒã¶ãŒãã«ã¹ã¿ã å ¥åãšãªã¢ãã¯ãªãã¯ãããšããã·ã¹ãã ïŒãŸãã¯ã«ã¹ã¿ã ã³ã³ããŒãã³ãïŒã«ãä»®æ³ããŒããŒããã¢ã¯ãã£ãã§ãããã®ããã«æ¯ãèãã¹ãã ãšç¥ãããå¿ èŠããããŸãã
æŠå¿µã³ãŒãïŒèª¬æçšïŒïŒ
// ã«ã¹ã¿ã ããŒãããã³ã³ããŒãã³ããšè¡šç€ºãšãªã¢ããããšä»®å®ããŸã
const securityCodeInput = document.getElementById('security-code-input'); // ã«ã¹ã¿ã 衚瀺
const customKeypad = document.getElementById('custom-keypad'); // ã«ã¹ã¿ã ããŒãããUI
let currentCode = '';
// è¡šç€ºãæŽæ°ãã颿°
function updateDisplay(digit) {
if (currentCode.length < 6) {
currentCode += digit;
// ãã¹ã¯ãããæ°åã衚瀺ããããã«UIãæŽæ°ïŒäŸïŒ'******'ïŒ
console.log('çŸåšã®ã³ãŒã:', currentCode);
// å
¥åãããã°ã©ã ã§é衚瀺ã®ãã€ãã£ãå
¥åã«èšå®ããå¿
èŠãããå ŽåïŒ
// const nativeInput = document.getElementById('hidden-native-input');
// nativeInput.value = currentCode;
// triggerFocus(nativeInput); // å¿
èŠã«å¿ããŠãã€ãã£ãããŒããŒããããªã¬ãŒããå¯èœæ§ãã
}
}
// ã«ã¹ã¿ã ããŒããããã¿ã³ã®ã€ãã³ããªã¹ããŒ
customKeypad.addEventListener('click', (event) => {
if (event.target.classList.contains('keypad-button')) {
const digit = event.target.dataset.digit;
updateDisplay(digit);
}
});
// ã«ã¹ã¿ã å
¥åã®ããªã¬ãŒ
securityCodeInput.addEventListener('focus', () => {
// ã«ã¹ã¿ã 衚瀺ã«ãã©ãŒã«ã¹ããããšããã«ã¹ã¿ã ããŒãããã衚瀺
customKeypad.style.display = 'block';
// äºæããã·ã¹ãã ã®ä»®æ³ããŒããŒãã衚瀺ãããå Žåã«ãããæå¶ããããšè©Šã¿ãïŒä»»æïŒ
// ããã¯ãã©ãããã©ãŒã ã«å€§ããäŸåããé£ããå ŽåããããŸãã
// äŸãã°ãäžéšã®ã¢ãã€ã«ãã©ãŠã¶ã§ã¯ãé衚瀺ã®ãã€ãã£ãå
¥åã«'readonly'ã远å ãã
// ãã®é衚瀺ã®å
¥åã«ãã©ãŒã«ã¹ããããšã§ãããã©ã«ãã®ããŒããŒããé²ããå ŽåããããŸãã
});
securityCodeInput.addEventListener('blur', () => {
// ã«ã¹ã¿ã 衚瀺ãããã©ãŒã«ã¹ãå€ãããšãã«ã«ã¹ã¿ã ããŒããããé衚瀺
setTimeout(() => {
if (!customKeypad.contains(document.activeElement)) {
customKeypad.style.display = 'none';
}
}, 100);
});
// ã·ã¹ãã ããŒããŒãã®ããã«æããããããã«ã¯ã
// é衚瀺ã®ãã€ãã£ãå
¥åãã£ãŒã«ããšé¢é£ä»ããå¿
èŠããããããããŸããïŒ
const hiddenNativeInput = document.createElement('input');
hiddenNativeInput.type = 'text';
hiddenNativeInput.style.position = 'absolute';
hiddenNativeInput.style.opacity = '0';
hiddenNativeInput.style.pointerEvents = 'none'; // çŽæ¥æäœã§ããªãããã«ãã
document.body.appendChild(hiddenNativeInput);
securityCodeInput.addEventListener('click', () => {
hiddenNativeInput.focus();
});
hiddenNativeInput.addEventListener('focus', () => {
// é衚瀺ã®å
¥åã«ãã©ãŒã«ã¹ããããšããã«ã¹ã¿ã UIã管çãã
customKeypad.style.display = 'block';
});
hiddenNativeInput.addEventListener('blur', () => {
// ãã©ãŒã«ã¹ãé衚瀺ã®å
¥åããå€ããã«ã¹ã¿ã ããŒãããã«è¡ããªãå Žåã«ã«ã¹ã¿ã ããŒããããé衚瀺
setTimeout(() => {
if (!customKeypad.contains(document.activeElement)) {
customKeypad.style.display = 'none';
}
}, 100);
});
// ããŒããŒãã€ãã³ãããªãã¹ã³ããŠé衚瀺ã®å
¥åãæŽæ°ããããã
// ã«ã¹ã¿ã 衚瀺ãšããžãã¯ãé§åããŸãã
hiddenNativeInput.addEventListener('input', (event) => {
// ãã®ã€ãã³ãã¯ããã€ãã£ãããŒããŒãïŒè¡šç€ºãããå ŽåïŒãŸãã¯
// ããã°ã©ã ã«ããå
¥åãå€ã倿Žãããšãã«çºç«ããŸãã
// ããã§ã®ããžãã¯ã¯ãevent.target.valueããã®å
¥åãæ¶è²»ãã
// ã«ã¹ã¿ã 衚瀺ãšcurrentCode倿°ãæŽæ°ããŸãã
// ã«ã¹ã¿ã ããŒãããã®å Žåããã€ãã£ãããŒããŒããããªã¬ãŒããªããããããŸããã
});
ã°ããŒãã«ãªèæ ®äºé ïŒ å°åã«ãã£ãŠãç¹ã«ã»ãã¥ãªãã£ã³ãŒãã®ãããªæ©å¯ããŒã¿ã«å¯Ÿããå ¥åãã£ãŒã«ãã®åäœã«ã€ããŠããŠãŒã¶ãŒã¯æåŸ ãæã€ãããããŸãããæç¢ºãªèŠèŠçãã£ãŒãããã¯ãæäŸããã«ã¹ã¿ã ããŒããŒããããŸããŸãªããã€ã¹ã®åããå ¥åæ¹æ³ã§å ç¢ã§ããããšã確èªããããšãéèŠã§ãã
äŸ3ïŒåœéããŒããŒãã¬ã€ã¢ãŠãã®åãæ¿ã
ããã³ããšã³ãä»®æ³ããŒããŒãAPIã¯çŽæ¥ããŒããŒãã¬ã€ã¢ãŠããæäŸããããã§ã¯ãããŸãããããã©ãŠã¶ãOSã®æ©èœãšçµã¿åãããŠåãæ¿ãã容æã«ããããšãã§ããŸãã
ã·ããªãªïŒ Webãµã€ãã®ãŠãŒã¶ãŒãè±èªãšã¢ã©ãã¢èªã®äž¡æ¹ã§å ¥åããå¿ èŠããããŸããçŸåšãããã€ã¹ã®ä»®æ³ããŒããŒãã§è±èªã¬ã€ã¢ãŠãã䜿çšããŠããŸãããã¢ã©ãã¢èªã«åãæ¿ããããšèããŠããŸãã
解決çïŒ Webã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ãªãã¯ããããšOSããã©ãŠã¶ã«ç®çã®å ¥åã¡ãœãããžã®åãæ¿ããããã°ã©ã çã«èŠæ±ããUIèŠçŽ ïŒäŸïŒèšèªéžæãã¿ã³ïŒãæäŸã§ããŸããããã¯å€ãã®å Žåãè€æ°ã®IMEã䜿çšããããã«èšå®ãããé衚瀺ã®ãã€ãã£ãå ¥åèŠçŽ ãšã®å¯Ÿè©±ã䌎ããŸãã
æŠå¿µã³ãŒãïŒèª¬æçšïŒïŒ
// 'hiddenNativeInput'ããŠãŒã¶ãŒã®ãã©ãŒã«ã¹å¯èœãªèŠçŽ ã«æ¢ã«é¢é£ä»ããããŠãã
// é衚瀺ã®å
¥åèŠçŽ ã§ãããšä»®å®ããŸãã
const languageSwitcherButton = document.getElementById('language-switcher');
languageSwitcherButton.addEventListener('click', () => {
// ããã¯ãã©ãŠã¶/OSã«å€§ããäŸåããŸãã
// JSããçŽæ¥IMEèšèªãåãæ¿ããããã®æ®éçãªAPIã¯ãããŸããã
// ãããã以äžã«ãã£ãŠåœ±é¿ãäžããããšãã§ããå ŽåããããŸãïŒ
// 1. å
¥åèŠçŽ ã«'lang'屿§ãèšå®ããã
// 2. å
¥åã«ãã©ãŒã«ã¹ãåœãã£ããšãã®ãã©ãŠã¶/OSã®ããã©ã«ãã®åäœã«é Œãã
// 3. ããé«åºŠãªå¶åŸ¡ã®ããã«ã¯ããã€ããªããã¢ããªãæ§ç¯ããŠããå Žåã
// ç¹å®ã®ãã©ãŠã¶æ¡åŒµæ©èœããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã®çµ±åãæ€èšããå¿
èŠããããããããŸããã
// 圱é¿ãäžããããã®äžè¬çã ããåžžã«å¹æçãšã¯éããªãã¢ãããŒãïŒ
// é衚瀺ã®å
¥åã«'lang'屿§ãããã°ãäžéšã®ã·ã¹ãã ã¯ãããæŸããããããŸããã
const currentLang = hiddenNativeInput.getAttribute('lang');
const newLang = (currentLang === 'en') ? 'ar' : 'en';
hiddenNativeInput.setAttribute('lang', newLang);
// å
¥åãåãã©ãŒã«ã¹ãããšãOS/ãã©ãŠã¶ãå
¥åã¡ãœãããåè©äŸ¡ããã®ã«åœ¹ç«ã€å ŽåããããŸãã
hiddenNativeInput.focus();
console.log(`èšèªã ${newLang} ã«åãæ¿ããããšããŸãã`);
// ã«ã¹ã¿ã ããŒãããUIãããå Žåã¯ããããæŽæ°ããå¿
èŠããããŸãã
});
ã°ããŒãã«ãªèæ ®äºé ïŒ ããã§åœéåãç䟡ãçºæ®ããŸããäžæ±ãæ±ã¢ãžã¢ã®ããã«å ¥åæ¹æ³ã倿§ãªå°åã®ãŠãŒã¶ãŒããµããŒãããã«ã¯ãèšèªåãæ¿ãã®æ éãªåãæ±ããå¿ èŠã§ããçŸåšã®èšèªãæç¢ºã«ç€ºããçŽæçãªåãæ¿ãæ¹æ³ãæäŸããããšãäžå¯æ¬ ã§ããäŸãã°ããšãžããã®ãŠãŒã¶ãŒã¯ããã€ã¹ã§è±èªãã¢ã©ãã¢èªããã©ã³ã¹èªã®ããŒããŒããåãæ¿ãããããããŸããããWebãµã€ãã¯ãââã®éžæãã·ãŒã ã¬ã¹ã«ä¿é²ãã¹ãã§ãã
課é¡ãšèæ ®äºé
匷åã§ã¯ãããŸãããå ç¢ãªä»®æ³ããŒããŒãå¶åŸ¡ã®å®è£ ã«ã¯èª²é¡ããªãããã§ã¯ãããŸããïŒ
- ãã©ãŠã¶ãšãã©ãããã©ãŒã ã®äžæŽåïŒ ä»®æ³ããŒããŒãAPIã®åäœãšå©çšå¯èœæ§ã¯ãããŸããŸãªãã©ãŠã¶ïŒChromeãFirefoxãSafariãEdgeïŒãOSïŒWindowsãmacOSãiOSãAndroidïŒã§å€§ããç°ãªããŸããä»®æ³ããŒããŒãå¶åŸ¡ã®ãã¹ãŠã®åŽé¢ã«ã€ããŠãåäžã®æ®éçã«æ¡çšãããæšæºã¯ãããŸããã
- ããŒããŒãã®é«ããšå¯èŠæ§ã®æ€åºïŒ ä»®æ³ããŒããŒãããã€è¡šç€ºããããããã®æ£ç¢ºãªå¯žæ³ããããŠããããã¥ãŒããŒãã«ã©ã®ããã«åœ±é¿ããããæ£ç¢ºã«å€æããããšã¯è€éã«ãªãå ŽåããããŸãããŠã£ã³ããŠã®ãªãµã€ãºã€ãã³ããç¹å®ã®ãã¥ãŒããŒãã¡ã¿ã¿ã°ã«é Œãããšã¯ãã°ãã°å¿ èŠã§ãããè匱ã«ãªãå¯èœæ§ããããŸãã
- ãã€ãã£ãããŒããŒãã®éè€é²æ¢ïŒ ã«ã¹ã¿ã å ¥åã³ã³ããŒãã³ãã®å Žåãã·ã¹ãã ã®ããã©ã«ãä»®æ³ããŒããŒããäºæãã衚瀺ãããã®ãé²ãããšã¯å€§ããªããŒãã«ã«ãªãå¯èœæ§ããããŸããããã«ã¯ãé衚瀺ã®ãã€ãã£ãå ¥åã«`readonly`屿§ã䜿çšãããããã©ã«ãã®åäœãç¡å¹ã«ãããæ éãªãã©ãŒã«ã¹ç®¡çãªã©ãæŠç¥ã®çµã¿åããããã°ãã°å«ãŸããŸãã
- ã¢ã¯ã»ã·ããªãã£ãã¹ãïŒ ã¹ã¯ãªãŒã³ãªãŒããŒãããŸããŸãªã¢ã¯ã»ã·ããªãã£ããŒãºãæã€ãŠãŒã¶ãŒã§ã®åŸ¹åºçãªãã¹ããæãéèŠã§ãããããŠãŒã¶ãŒã«ãšã£ãŠæ©èœãããã®ããå¥ã®ãŠãŒã¶ãŒã«ã¯æ©èœããªãå ŽåããããŸãã
- ããã©ãŒãã³ã¹ïŒ ã¬ã€ã¢ãŠããåçã«èª¿æŽããããè€éãªã«ã¹ã¿ã ããŒããŒãUIã管çããããããšãç¹ã«äœã¹ããã¯ã®ããã€ã¹ã§ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããæé©åãéµã§ãã
- åœéåã®è€éãïŒ ã«ã¹ã¿ã ããŒããŒãã¬ã€ã¢ãŠããããŸããŸãªèšèªã®ãŠãŒã¶ãŒã«ãšã£ãŠçŽæçã§å¹ççã§ããããšãä¿èšŒããã«ã¯ã圌ãã®å ¥åãã¿ãŒã³ãšæåçæåŸ ã«å¯Ÿããæ·±ãçè§£ãå¿ èŠã§ããäŸãã°ãéåœèªå ¥åçšã«èšèšãããããŒããŒãã¯åæ¯ã®çµã¿åããããµããŒãããå¿ èŠããããããããŸããããæ¥æ¬èªããŒããŒãã¯ããªæŒ¢å倿ãåŠçããå¿ èŠããããŸãã
ã°ããŒãã«ãªä»®æ³ããŒããŒãå®è£ ã®ãã¹ããã©ã¯ãã£ã¹
çã«å¹æçã§äžççã«å æ¬çãªäœéšãåµåºããããã«ããããã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããïŒ
- æåããã¢ã¯ã»ã·ããªãã£ãåªå ããïŒ åŸä»ãã§ã¯ãªããã¢ã¯ã»ã·ããªãã£ã念é ã«çœ®ããŠèšèšããŸããã»ãã³ãã£ãã¯ãªHTMLãå¿ èŠã«å¿ããŠARIA屿§ã䜿çšããããŒããŒãããã²ãŒã·ã§ã³ãå®ç§ã«æ©èœããããšã確èªããŸãã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãïŒ ãŸãã³ã¢æ©èœãæ§ç¯ãããã®äžã«ä»®æ³ããŒããŒãã®æ©èœåŒ·åãéããŸããããã«ãããé«åºŠãªAPIæ©èœããµããŒããããŠããªãç°å¢ã§ãã¢ããªã±ãŒã·ã§ã³ã䜿çšå¯èœã§ããç¶ããŸãã
- åœéåã®ããã®ãŠãŒã¶ãŒäžå¿èšèšïŒ ã«ã¹ã¿ã ããŒããŒããå ¥åã¡ãœãããèšèšããéã¯ã察象ãšãªãæµ·å€åžå Žã®ãŠãŒã¶ãŒãå·»ã蟌ã¿ãŸããã¬ã€ã¢ãŠããããŒãµã€ãºãå ¥åãããŒã«é¢ãã圌ãã®å¥œã¿ãçè§£ããŸããäŸãã°ãäžåœã®ãŠãŒã¶ãŒã¯ãäžè¬çã«äœ¿çšãããæåã«å¯ŸããŠç²ŸåºŠã®é«ãäºæž¬ããã¹ãåè£ãåããæŒé³å ¥åæ¹æ³ã奜ããããããŸããã
- æç¢ºãªèŠèŠçãã£ãŒãããã¯ïŒ ããŒããŒããã¢ã¯ãã£ããªãšããã©ã®èšèªãéžæãããŠããããå ¥åãã©ã®ããã«åŠçãããŠããããªã©ãäœãèµ·ãã£ãŠãããã«ã€ããŠåžžã«æç¢ºãªèŠèŠçåå³ããŠãŒã¶ãŒã«æäŸããŸãã
- ã°ã¬ãŒã¹ãã«ãã°ã©ããŒã·ã§ã³ïŒ ç¹å®ã®ä»®æ³ããŒããŒãæ©èœã倱æããããµããŒããããŠããªãã£ããããå Žåã§ããã¢ããªã±ãŒã·ã§ã³ã¯äœ¿çšå¯èœã§ããã¹ãã§ããæšæºçãªãã©ãŠã¶ã®åäœãžã®ãã©ãŒã«ããã¯ãäžå¯æ¬ ã§ãã
- 培åºçãªã¯ãã¹ãã©ãããã©ãŒã ãã¹ãïŒ å¹ åºãããã€ã¹ãOSããã©ãŠã¶ã§ãã¹ãããŸããä»®æ³ããŒããŒããããŸããŸãªç»é¢ãµã€ãºãåããšã©ã®ããã«çžäºäœçšãããã«çްå¿ã®æ³šæãæããŸããç°ãªããããã¯ãŒã¯æ¡ä»¶äžã§ããã¹ãããŸãã
- æ¢åã®ã©ã€ãã©ãªã®æŽ»çšïŒæ³šæããŠïŒïŒ ã¢ã¯ã»ã·ããªãã£ãšåœéåã®èŠä»¶ãæºããå Žåãããã¡ã³ããã³ã¹ãããŠããä»®æ³ããŒããŒãçšã®JavaScriptã©ã€ãã©ãªã®äœ¿çšãæ€èšããŸãããã ããããã©ãŒãã³ã¹ãšäºææ§ã«ã€ããŠã¯åžžã«åå³ããŠãã ããã
- å©çšå¯èœãªå Žåã¯ãã©ãŠã¶APIãæŽ»çšããïŒ ä»®æ³ããŒããŒããšãã¥ãŒããŒã管çã«é¢é£ããé²åãããã©ãŠã¶APIã«åžžã«æ³šæãæããä¿¡é Œæ§ãé«ãæšæºåãããåäœãæäŸããå Žæã§äœ¿çšããŸãã
ä»®æ³ããŒããŒãã€ã³ã¿ã©ã¯ã·ã§ã³ã®æªæ¥
ããã³ããšã³ãä»®æ³ããŒããŒãAPIã¯ããŸã é²åäžã§ãããããé©å¿æ§ãé«ãã¢ã¯ã»ã·ãã«ãªWebã€ã³ã¿ãŒãã§ãŒã¹ã«åããéèŠãªäžæ©ã衚ããŠããŸããããã€ã¹ããã倿§åãããŠãŒã¶ãŒã®ããŒãºãæ¡å€§ããã«ã€ããŠã以äžãæåŸ ã§ããŸãïŒ
- æšæºåãããAPIïŒ ãã©ãŠã¶ãšãã©ãããã©ãŒã éã§ã®æšæºåãé²ãããšã§ãéçºãç°¡çŽ åãããŸãã
- AIãæŽ»çšããå ¥åïŒ ããã€ã³ããªãžã§ã³ããªäºæž¬ããã¹ããèªåä¿®æ£ãããã«ã¯ãžã§ã¹ãã£ãŒããŒã¹ã®å ¥åãä»®æ³ããŒããŒãã«çŽæ¥çµ±åãããŸãã
- ã¯ãã¹ããã€ã¹åæïŒ ç°ãªãããã€ã¹éã®ã·ãŒã ã¬ã¹ãªå¯Ÿè©±ãäžæ¹ã§ã®å ¥åã仿¹ã«åœ±é¿ãäžããããã«ãªããŸãã
- æ¡åŒµçŸå®ïŒARïŒçµ±åïŒ ç©ç空éã«éããããä»®æ³ããŒããŒãããARç°å¢ã§ã®ãžã§ã¹ãã£ãŒãä»ããŠå¶åŸ¡ãããããŒããŒãã
çµè«
ããã³ããšã³ãä»®æ³ããŒããŒãAPIã¯ãæ®éçã«ã¢ã¯ã»ã¹å¯èœã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªWebäœéšã®åµåºãç®æãéçºè ã«ãšã£ãŠã匷åãªããŒã«ã¹ã€ãŒããæäŸããŸãããã®èœåãšæœåšçãªèª²é¡ãçè§£ããã¢ã¯ã»ã·ããªãã£ãšåœéåã®ãã¹ããã©ã¯ãã£ã¹ãéµå®ããããšã§ãã°ããŒãã«ãªå©çšè ã«å¹æçã«å¿ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãããããã®æè¡ãæ¡çšããããšã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããã ãã§ãªããäžçäžã§é«ãŸãããžã¿ã«ã€ã³ã¯ã«ãŒãžã§ã³ã®èŠè«ã«ãåèŽããŠããŸãã
åçŽãªé£çµ¡ãã©ãŒã ãéçºããŠããå Žåã§ããè€éãªEã³ããŒã¹ãã©ãããã©ãŒã ãéçºããŠããå Žåã§ãããŠãŒã¶ãŒãä»®æ³ããŒããŒããšã©ã®ããã«å¯Ÿè©±ãããã«æ³šæãæãããšã¯ããŠãŒã¶ããªãã£ãã¢ã¯ã»ã·ããªãã£ããããŠå šäœçãªãŠãŒã¶ãŒæºè¶³åºŠã«å€§ãã圱é¿ããŸããã°ããŒãã«ãªå©çšè ã«ãšã£ãŠããã®çްéšãžã®æ³šæã¯åãªãæ©èœã§ã¯ãªããå¿ èŠäžå¯æ¬ ãªãã®ã§ãã